本文为看雪论坛优秀文章
看雪论坛作者ID:邪神蘑菇
文件名称:总部门店软件.exe
文件大小:229,376 字节
文件类型:蠕虫
MD5:4da4c0e906bb5203c77daa4ab9ec5913
修改时间:2000/1/1 2:49:21
注册表行为
枚举字符映射相关键值,该Windows功能可以将不能正常显示的字符使用备用字体来替换,关键词FontLink。查询字符集相关的键值,关键词SurrogateFallback。设置开机自启动,启动路径及目标程序C:WINDOWS\WINDOWS.exe。不显示隐藏属性的文件和文件夹,一直保持修改开机启动和不显示隐藏文件这两个注册表,也算是一些蠕虫病毒的常规操作了。
文件行为
向Windows目录下写入Windows.exe,共写入229,376字节,与病毒自身相同大小,判断是复制到系统路径。复制自身到每个文件目录下,名字为目录名称加.exe,具有一定的迷惑性,占用病毒程序防止被修改。
使用detect it easy侦测文件类型,确定好准备如何分析,可以看到这是一个VB编译的程序,正好可以使用VB反编译来进行静态分析,因为是native的程序可以使用ollydbg进行动态调试。VB程序只有一个窗体的话则从窗体form的load过程开始执行,如果有多个窗体则从设计的第一个窗体的Form_Load过程开始执行,因为没有main过程,所以判断Form_Load就是VB应用程序的入口点了。
Code -> frmutama -> Form_Load_41EBD0分析
frmutama是其设计的第一个窗口,从这个窗口的入口过程开始分析。判断当前目录是不是系统目录,不是则调用cari过程。
Code -> frmutama -> cari_41A7B0分析
调用cek_hardisk遍历磁盘驱动器获取磁盘类型GetDriveType,随后得到一个有效磁盘数。接着调用cekdisket过程,该过程主要执行sebar_semua,主要是对传入的磁盘驱动器进行文件感染。其中41FDE0具体实现对磁盘文件和目录进行遍历。返回到sebar_semua过程复制病毒到每个目录:复制完毕后调用ShellExecute运行系统目录下的病毒,程序退出。cari过程可以看出,这是主要感染磁盘的过程,以每个上级目录名称作为文件名字复制到目录里。
Code -> frmutama -> cek_hardisk_419E10分析
获取每个磁盘驱动器的类型,将有效的磁盘数var_3c赋予hardisk.Text。
该病毒使用了timer实现了部分功能
timer1实现开机自启动
starup过程将病毒复制到系统目录,并添加到注册表启动项,接着将系统目录下的病毒(Windows.exe)隐藏。
timer2实现隐藏目录
Timer2将修改注册表使得文件管理器隐藏文件显示。
timer3实现创建xp.dll
timer4发送退格信号
用于返回上一级目录,从文件浏览器双击病毒的时候就会看到返回了上级目录。
VB程序的逆向,还好是native比较容易调试,算是入门分析VB了,从反编译出来的结果可以看到大致的功能。仔细调试了里面的过程函数发现了两个有意思的东西,一个是VB的字符串,字符串是一个对象,从字符串对象的第三个指针能找到字符串,另一个是vb的doevents,doevents在遍历文件过程中,因为是一个耗时操作,就将控制权交给其他过程处理(timer),timer处理完毕后回来继续执行。
看雪ID:邪神蘑菇
https://bbs.pediy.com/user-830887.htm
*本文由看雪论坛 邪神蘑菇 原创,转载请注明来自看雪社区。
好书推荐